home *** CD-ROM | disk | FTP | other *** search
/ Aminet 48 / Aminet 48 (2002)(GTI - Schatztruhe)[!][Apr 2002].iso / Aminet / text / edit / vim60rt.lha / Vim / vim60 / syntax / yacc.vim < prev    next >
Encoding:
Text File  |  2001-05-10  |  3.0 KB  |  96 lines

  1. " Vim syntax file
  2. " Language:    Yacc
  3. " Maintainer:    Dr. Charles E. Campbell, Jr. <Charles.E.Campbell.1@gsfc.nasa.gov>
  4. " Last Change:    March 1, 2001
  5. " Option:
  6. "   yacc_uses_cpp : if this variable exists, then C++ is loaded rather than C
  7.  
  8. " For version 5.x: Clear all syntax items
  9. " For version 6.x: Quit when a syntax file was already loaded
  10. if version < 600
  11.   syntax clear
  12. elseif exists("b:current_syntax")
  13.   finish
  14. endif
  15.  
  16. " Read the C syntax to start with
  17. if version >= 600
  18.   if exists("yacc_uses_cpp")
  19.     runtime! syntax/cpp.vim
  20.   else
  21.     runtime! syntax/c.vim
  22.   endif
  23. elseif exists("yacc_uses_cpp")
  24.   so <sfile>:p:h/cpp.vim
  25. else
  26.   so <sfile>:p:h/c.vim
  27. endif
  28.  
  29. " Clusters
  30. syn cluster    yaccActionGroup    contains=yaccDelim,cInParen,cTodo,cIncluded,yaccDelim,yaccCurlyError,yaccUnionCurly,yaccUnion,cUserLabel,cOctalZero,cCppOut2,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCommentStartError,cParenError
  31. syn cluster    yaccUnionGroup    contains=yaccKey,cComment,yaccCurly,cType,cStructure,cStorageClass,yaccUnionCurly
  32.  
  33. " Yacc stuff
  34. syn match    yaccDelim    "^\s*[:|;]"
  35. syn match    yaccOper    "@\d\+"
  36.  
  37. syn match    yaccKey    "^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>"
  38. syn match    yaccKey    "\s%\(prec\|expect\)\>"
  39. syn match    yaccKey    "\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+"
  40. syn keyword    yaccKeyActn    yyerrok yyclearin
  41.  
  42. syn match    yaccUnionStart    "^%union"    skipwhite skipnl nextgroup=yaccUnion
  43. syn region    yaccUnion    contained matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}"    contains=@yaccUnionGroup
  44. syn region    yaccUnionCurly    contained matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccUnionGroup
  45. syn match    yaccBrkt    contained "[<>]"
  46. syn match    yaccType    "<[a-zA-Z_][a-zA-Z0-9_]*>"    contains=yaccBrkt
  47. syn match    yaccDefinition    "^[A-Za-z][A-Za-z0-9_]*[ \t]*:"
  48.  
  49. " special Yacc separators
  50. syn match    yaccSectionSep    "^[ \t]*%%"
  51. syn match    yaccSep    "^[ \t]*%{"
  52. syn match    yaccSep    "^[ \t]*%}"
  53.  
  54. " I'd really like to highlight just the outer {}.  Any suggestions???
  55. syn match    yaccCurlyError    "[{}]"
  56. syn region    yaccAction    matchgroup=yaccCurly start="{" end="}" contains=ALLBUT,@yaccActionGroup
  57.  
  58.  
  59. " Define the default highlighting.
  60. " For version 5.7 and earlier: only when not done already
  61. " For version 5.8 and later: only when an item doesn't have highlighting yet
  62. if version >= 508 || !exists("did_yacc_syn_inits")
  63.   if version < 508
  64.     let did_yacchdl_syn_inits = 1
  65.     command -nargs=+ HiLink hi link <args>
  66.   else
  67.     command -nargs=+ HiLink hi def link <args>
  68.   endif
  69.  
  70.   " Internal yacc highlighting links
  71.   HiLink yaccBrkt    yaccStmt
  72.   HiLink yaccKey    yaccStmt
  73.   HiLink yaccOper    yaccStmt
  74.   HiLink yaccUnionStart    yaccKey
  75.  
  76.   " External yacc highlighting links
  77.   HiLink yaccCurly    Delimiter
  78.   HiLink yaccCurlyError    Error
  79.   HiLink yaccDefinition    Function
  80.   HiLink yaccDelim    Function
  81.   HiLink yaccKeyActn    Special
  82.   HiLink yaccSectionSep    Todo
  83.   HiLink yaccSep    Delimiter
  84.   HiLink yaccStmt    Statement
  85.   HiLink yaccType    Type
  86.  
  87.   " since Bram doesn't like my Delimiter :|
  88.   HiLink Delimiter    Type
  89.  
  90.   delcommand HiLink
  91. endif
  92.  
  93. let b:current_syntax = "yacc"
  94.  
  95. " vim: ts=15
  96.